package es.udima.geo.geoserver.rest;

import java.util.ArrayList;
import java.util.Collection;

import es.udima.geo.geoserver.entities.GpsDataRetrieveResultError;
import es.udima.geo.geoserver.entities.UserUpdateResultError;
import es.udima.geo.geoserver.rest.entities.GpsDataRetrieveError;
import es.udima.geo.geoserver.rest.entities.IResponseError;
import es.udima.geo.geoserver.rest.entities.UserSessionError;
import es.udima.geo.geoserver.rest.entities.UserUpdateError;

/**
 * Clase de apoyo para la traducción de errores desde los controladores de
 * negocio hacia los errores utilizados en los servicios rest.
 * 
 * @author david
 * 
 */
class RestServiceErrorHelper {

    /**
     * Constructor
     */
    RestServiceErrorHelper() {
    }

    /**
     * Traduce errores de sesión.
     * 
     * @param errors
     *            Errores de sesión.
     * @return Colección de errores traducida.
     */
    Collection<IResponseError> translateUserSessionErrors(Collection<es.udima.geo.geoserver.entities.UserSessionError> errors) {
	Collection<IResponseError> res = new ArrayList<IResponseError>();
	for (es.udima.geo.geoserver.entities.UserSessionError e : errors) {
	    UserSessionError ue = UserSessionError.valueOf(e.name());
	    res.add(ue);
	}
	return res;
    }

    /**
     * Traduce errores de actualización de usuario.
     * 
     * @param errors
     *            Errores de actualización de usuario.
     * @return Colección de errores traducida.
     */
    Collection<IResponseError> translateUserUpdateErrors(Collection<UserUpdateResultError> errors) {
	Collection<IResponseError> res = new ArrayList<IResponseError>();
	for (UserUpdateResultError e : errors) {
	    UserUpdateError ue = UserUpdateError.valueOf(e.name());
	    res.add(ue);
	}
	return res;
    }

    /**
     * Traduce errores de recuperación de datos gps.
     * 
     * @param errors
     *            Errores de recuperación de datos gps.
     * @return Colección de errores traducida.
     */
    Collection<IResponseError> translateGpsDataRetrieveErrors(Collection<GpsDataRetrieveResultError> errors) {
	Collection<IResponseError> res = new ArrayList<IResponseError>();
	for (GpsDataRetrieveResultError e : errors) {
	    GpsDataRetrieveError ue = GpsDataRetrieveError.valueOf(e.name());
	    res.add(ue);
	}
	return res;
    }

}
